home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
EnigmA Amiga Run 1997 April
/
EnigmA AMIGA RUN 17 (1997)(G.R. Edizioni)(IT)[!][issue 1997-04][EAR-CD].iso
/
EARCD
/
comm
/
cnet
/
MasterMind.lha
/
MasterMind
< prev
next >
Wrap
Text File
|
1996-12-21
|
9KB
|
323 lines
/*************************************************************************/
/* MasterMind v1.0 for CNet by Morpheus */
/* This game is a conversion of the E! door MastE!rMind v1.1 */
/*************************************************************************/
path='pfiles:MasterMind/'
/*************************************************************************/
options results
tr=transmit
se=sendstring
if ~open('HiScore',path||'MasterMind.data','R') then;do
if ~open('HiScore',path||'MasterMind.data','W') then;do
tr 'Error: Could not create new highscore file!w3'
call quit_game
end
bbsidentify SYSOP
sysop=result
do i=1 for 10
alias.i=sysop
writeln('HiScore',alias.i)
score.i=1100-(i*100)
writeln('HiScore',score.i)
end
close('HiScore')
end
else;do
do i=1 for 10
alias.i=readln('HiScore')
score.i=readln('HiScore')
end
close('HiScore')
end
quit=0
call show_hiscore
do forever
call show_screen
do i=1 for 4
code.i=1+rnd(6)
end
time('R')
move=1
do while move<=10
call get_invoer
call check_invoer
call show_hint(3+2*move)
if zwart=4 then;do
klok=time('E')
klok=delstr(klok,length(klok)-2,3)
call show_win
move=10
end
move=move+1
end
if zwart~=4 then call show_lose
end
exit
rnd:
return (random(1,100,time(s))+random(1,100,time(s))+random(1,100,time(s)))//arg(1)
show_screen:
tr 'f1@6n1 c7ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿'
tr ' ³ c6M a s t E ! r M i n d c7³'
tr ' ÃÄÄÄÄÂÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿'
tr ' ³ c61 c7³ c6.... c7³ ±± ±± ±± ±± ³ ³ c6I n s t r u c t i o n s c7³'
tr ' ³ ÃÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´'
tr ' ³ c62 c7³ c6.... c7³ ±± ±± ±± ±± ³ ³ c6Use cursor-keys to choose colour c7³'
tr ' ³ ÃÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³ ³'
tr ' ³ c63 c7³ c6.... c7³ ±± ±± ±± ±± ³ ³ c6Press <Enter> or <Space> to select c7³'
tr ' ³ ÃÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³ ³'
tr ' ³ c64 c7³ c6.... c7³ ±± ±± ±± ±± ³ ³ c6Press <Del> or <Backspace> to undo c7³'
tr ' ³ ÃÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³ ³'
tr ' ³ c65 c7³ c6.... c7³ ±± ±± ±± ±± ³ ³ c6Press <Q> or <Esc> to quit c7³'
tr ' ³ ÃÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´'
tr ' ³ c66 c7³ c6.... c7³ ±± ±± ±± ±± ³ ³ c6+ = right colour, right position c7³'
tr ' ³ ÃÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³ ³'
tr ' ³ c67 c7³ c6.... c7³ ±± ±± ±± ±± ³ ³ c6- = right colour, wrong position c7³'
tr ' ³ ÃÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ'
tr ' ³ c68 c7³ c6.... c7³ ±± ±± ±± ±± ³'
tr ' ³ ÃÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ÚÄÄÄ¿ÚÄÄÄ¿ÚÄÄÄ¿ÚÄÄÄ¿ÚÄÄÄ¿ÚÄÄÄ¿'
tr ' ³ c69 c7³ c6.... c7³ ±± ±± ±± ±± ³ ³c1ÛÛÛc7³³c2ÛÛÛc7³³c3ÛÛÛc7³³c4ÛÛÛc7³³c5ÛÛÛc7³³c6ÛÛÛc7³'
tr ' ³ ÃÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³c1ÛÛÛc7³³c2ÛÛÛc7³³c3ÛÛÛc7³³c4ÛÛÛc7³³c5ÛÛÛc7³³c6ÛÛÛc7³'
tr ' ³ c610 c7³ c6.... c7³ ±± ±± ±± ±± ³ ÀÄÄÄÙÀÄÄÄÙÀÄÄÄÙÀÄÄÄÙÀÄÄÄÙÀÄÄÄÙ'
tr ' ÃÄÄÄÄÁÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄ´'
tr ' ³ c6Written by /Y\orpheus c7³'
tr ' ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ'
return
get_invoer:
tr put_cursor2(43,1)
se '30H'
invoer.1=1
i=1
do while i<=5&quit=0
call check_carrier
getchar
key=result
if key='1B'x then;do
checkio
if result='1' then;do
getchar;getchar
key=result
if key='C' then key='6'
if key='D' then key='4'
end
else quit=1
end
else if key='D'x|key='5'|key=' ' then key='0'
select
when upper(key)='Q' then quit=1
when key='0'&i<=4 then;do
k=i
i=i+1
invoer.i=invoer.k
tr put_colour(3+2*move,13+3*i,invoer.i)
se '30H'
end
when key='0'&i=5 then;do
i=i+1
se '43Hc6 '
se '30H'
end
when key='4'&i<=4 then;do
tr put_cursor1(38+5*invoer.i,invoer.i)
if invoer.i=1 then invoer.i=6
else invoer.i=invoer.i-1
tr put_cursor2(38+5*invoer.i,invoer.i)
se '30H'
end
when key='6'&i<=4 then;do
tr put_cursor1(38+5*invoer.i,invoer.i)
if invoer.i=6 then invoer.i=1
else invoer.i=invoer.i+1
tr put_cursor2(38+5*invoer.i,invoer.i)
se '30H'
end
when (key='08'x|key='7F'x)&i>1 then;do
k=i
i=i-1
invoer.i=invoer.k
tr undo_colour(3+2*move,13+3*k)
tr put_cursor2(38+5*invoer.i,invoer.i)
se '43Hc6 '
se '30H'
end
otherwise nop
end
if i=5 then;do
tr put_cursor1(38+5*invoer.i,invoer.i)
se '43Hc6Press <Enter> to end this move.'
se '30H'
end
end
if quit=1 then;do
tr put_cursor1(38+5*invoer.i,invoer.i)
call quit_game
end
return
check_invoer:
zwart=0;wit=0
do i=1 for 4
temp.i=code.i
end
do i=1 for 4
if invoer.i=temp.i then;do
zwart=zwart+1
temp.i=0
end
end
if zwart<4 then
do i=1 for 4
if temp.i~=0 then;do
j=0
do while j~=3
idx=((i+j)//4)+1
if invoer.i=temp.idx then;do
wit=wit+1
temp.idx=10
j=3
end
else j=j+1
end
end
end
return
show_hint:
se ''arg(1)';12Hc7'
i=1
do while i<=zwart
se '+'
i=i+1
end
do while i<=(wit+zwart)
se '-'
i=i+1
end
do while i<=4
se ' '
i=i+1
end
se '30H'
return
show_win:
if klok<600 then score=(600-klok)*20
else score=0
score=score+(11-move)*1000
se '50Hc6Congratulations!'
se '45HYou have cracked the code!'
se '48HYour score is: '||score
if score>score.10 then;do
se '48HYou have a high score!'
se '41HPress <Enter> to view high scores.'
end
else se '41HPress <Enter> to start a new game.'
se '30H'
call check_carrier
getchar
key=result
if key='1B'x then;do
checkio
if result='1' then;do
getchar
getchar
end
else call quit_game
end
else if upper(key)='Q' then call quit_game
if score>score.10 then;do
i=1
do while i<=10
if score>score.i then;do
j=10
do while j>i
k=j-1
score.j=score.k
alias.j=alias.k
j=j-1
end
score.i=score
getuser 1
alias.i=result
i=10
end
i=i+1
end
if ~open('HiScore',path||'MasterMind.data','W') then;do
tr 'Error: Could not write to highscore file!w3'
call quit_game
end
do i=1 for 10
writeln('HiScore',alias.i)
writeln('HiScore',score.i)
end
close('HiScore')
call show_hiscore
end
return
show_lose:
se '41Hc6Sorry! You did not crack the code!'
se '42HThe correct code is: c'code.1'ÛÛ c'code.2'ÛÛ c'code.3'ÛÛ c'code.4'ÛÛ'
se '41Hc6Press <Enter> to start a new game.'
se '30H'
call check_carrier
getchar
key=result
if key='1B'x then;do
checkio
if result='1' then;do
getchar
getchar
end
else call quit_game
end
else if upper(key)='Q' then call quit_game
return
quit_game:
bbsidentify name
bbsname=result
se 'f1n3c6'center('Returning to '||bbsname||'...',78)||'n1w3q1'
exit
put_cursor1:
return ''arg(1)'Hc7ÚÄÄÄ¿<5!1³z'arg(2)' z0c7³<5!1³z'arg(2)' z0c7³<5!1ÀÄÄÄÙ'
put_cursor2:
return ''arg(1)'Hc3ÉÍÍÍ»<5!1ºz'arg(2)' z0c3º<5!1ºz'arg(2)' z0c3º<5!1ÈÍÍͼ'
put_colour:
return ''arg(1)';'arg(2)'Hc'arg(3)'ÛÛ'
undo_colour:
return ''arg(1)';'arg(2)'Hc7±±'
check_carrier:
getcarrier
if result='FALSE' then exit
return
show_hiscore:
tr 'f1@6'
tr ' c7ÛÛc4¿ c7ÛÛc4¿ c7ÛÛÛÛÛc4¿ c7ÛÛÛÛÛc4¿ c7ÛÛÛÛÛÛÛc4¿c7ÛÛÛÛÛÛÛc4¿c7ÛÛc4¿c7ÛÛÛÛÛÛc4¿ c7ÛÛc4¿ c7ÛÛc4¿c7ÛÛc4¿c7ÛÛÛc4¿ c7ÛÛc4¿c7ÛÛÛÛÛÛc4¿'
tr ' c7z6²²²c4z0¿c7z6²²²c4z0³c7z6²²c4z0ÚÄÄc7z6²²c4z0¿c7z6²²c4z0ÚÄÄÄÙ ÀÄc7z6²²c4z0ÚÄÄÙc7z6²²c4z0ÚÄÄÄÄÙc7z6²²c4z0³c7z6²²c4z0ÚÄÄc7z6²²c4z0¿c7z6²²²c4z0¿c7z6²²²c4z0³c7z6²²c4z0³c7z6²²²²c4z0¿c7z6²²c4z0³c7z6²²c4z0ÚÄÄc7z6²²c4z0¿'
tr ' c7z6±±±±±±±c4z0³c7z6±±±±±±±c4z0³Àc7z6±±±±±c4z0¿ c7z6±±c4z0³ c7z6±±±±±c4z0¿ c7z6±±c4z0³c7z6±±±±±±c4z0ÚÙc7z6±±±±±±±c4z0³c7z6±±c4z0³c7z6±±c4z0Úc7z6±±±±c4z0³c7z6±±c4z0³ c7z6±±c4z0³'
tr ' c7z6°°c4z0Úc7z6°c4z0Úc7z6°°c4z0³c7z6°°c4z0ÚÄÄc7z6°°c4z0³ ÀÄÄÄc7z6°°c4z0¿ c7z6°°c4z0³ c7z6°°c4z0ÚÄÄÙ ÀÄÙc7z6°°c4z0Úc7z6°°c4z0ÚÙ c7z6°°c4z0Úc7z6°c4z0Úc7z6°°c4z0³c7z6°°c4z0³c7z6°°c4z0³Àc7z6°°°c4z0³c7z6°°c4z0³ c7z6°°c4z0³'
tr ' z6 z0³ÀÙz6 z0³z6 z0³ z6 z0³z6 z0ÚÙ z6 z0³ z6 z0¿z6 z0¿z6 z0³Àz6 z0¿ z6 z0³ÀÙz6 z0³z6 z0³z6 z0³ Àz6 z0³z6 z0ÚÙ'
tr ' ÀÄÙ ÀÄÙÀÄÙ ÀÄÙÀÄÄÄÄÄÙ ÀÄÙ ÀÄÄÄÄÄÄÙÀÄÙÀÄÙ ÀÄÙ ÀÄÙ ÀÄÙÀÄÙÀÄÙ ÀÄÙÀÄÄÄÄÄÙn1'
tr copies(' ',22)||'c6Éc7Í'||copies('c6Íc7Í',16)||'c6»'
tr copies(' ',22)||'c7º º'
tr copies(' ',22)||'c6º Hc7ic6gc7h c6Sc7cc6oc7rc6ec7s c6º'
tr copies(' ',22)||'c7º º'
tr copies(' ',22)||'c6Ìc7Í'||copies('c6Íc7Í',16)||'c6¹'
tr copies(' ',22)||'c7º º'
do i=1 for 10
if i//2 then kleur='c6'
else kleur='c7'
tr copies(' ',22)||kleur||'ºc1'||right(i,3)||'. c3'||left(alias.i,21,'.')||'c2'||right(score.i,6)||kleur||' º'
end
tr copies(' ',22)||'c6º º'
tr copies(' ',22)||'c7Èc6Í'||copies('c7Íc6Í',16)||'c7¼'
se 'n1c6'copies(' ',27)||'Press <Enter> to continue '
call check_carrier
getchar
key=result
if key='1B'x then;do
checkio
if result='1' then;do
getchar
getchar
end
else call quit_game
end
else if upper(key)='Q' then call quit_game
return